package com.itzhoun;

/**
 * @author 周楠
 * @Date 2023/01/22/下午 4:31
 */
public interface Software {

    /**
     * 对比最初的设计，将抽象部分（手机）与它的实现部分（手机软件类）分离，
     * 将实现部分抽象成单独的类，使它们都可以独立地变化。整个类图看起来像一座桥，所以称为桥接模式
     *
     * 继承是一种强耦合关系，子类的实现与它的父类有非常紧密的依赖关系，父类的任何变化 都会导致子类发生变化，
     * 因此继承或者说强耦合关系严重影响了类的灵活性，并最终限制了可复用性
     *
     * 从桥接模式的设计上我们可以看出聚合是一种比继承要弱的关联关系，
     * 手机类和软件类都可独立的进行变化，不会互相影响
     *
     *
     * 桥接模式通常适用于以下场景。
     *
     * 当一个类存在两个独立变化的维度，且这两个维度都需要进行扩展时。
     *
     * 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。
     *
     * 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。
     *
     * 优点：
     *
     * (1)在很多情况下，桥接模式可以取代多层继承方案，多层继承方案违背了“单一职责原则”，复用性较差，且类的个数非常多，桥接模式是比多层继承方案更好的解决方法，它极大减少了子类的个数。
     *
     * (2)桥接模式提高了系统的可扩展性，在两个变化维度中任意扩展一个维度，都不需要修改原有系统，符合“开闭原则”。
     *
     * 缺点：
     *
     * 桥接模式的使用会增加系统的理解与设计难度，由于关联关系建立在抽象层，要求开发者一开始就针对抽象层进行设计与编程。
     */

    public void run();
}
